//
// DotNetNuke - http://www.dotnetnuke.com
// Copyright (c) 2002-2010
// by Perpetual Motion Interactive Systems Inc. ( http://www.perpetualmotion.ca )
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
// documentation files (the "Software"), to deal in the Software without restriction, including without limitation 
// the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and 
// to permit persons to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions 
// of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 
// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
// DEALINGS IN THE SOFTWARE.
//

using System;
using System.Collections.Generic;
using System.Web.UI;
using DotNetNuke.Common.Utilities;
using DotNetNuke.Entities.Portals;
using DotNetNuke.Entities.Tabs;
using DotNetNuke.Services.Localization;

namespace DotNetNuke.UI.WebControls
{
	[ToolboxData("<{0}:DNNPageEditControl runat=server></{0}:DNNPageEditControl>")]
	public class DNNPageEditControl : IntegerEditControl
	{
		public DNNPageEditControl()
		{
		}
		protected override void RenderEditMode(System.Web.UI.HtmlTextWriter writer)
		{
			PortalSettings _portalSettings = Common.Globals.GetPortalSettings();
			List<TabInfo> listTabs = TabController.GetPortalTabs(_portalSettings.PortalId, Null.NullInteger, true, "<" + Localization.GetString("None_Specified") + ">",
                                                            false, false, true, true, false);
			ControlStyle.AddAttributesToRender(writer);
			writer.AddAttribute(HtmlTextWriterAttribute.Name, this.UniqueID);
			writer.RenderBeginTag(HtmlTextWriterTag.Select);
			for (int tabIndex = 0; tabIndex <= listTabs.Count - 1; tabIndex++) {
				TabInfo tab = listTabs[tabIndex];
				writer.AddAttribute(HtmlTextWriterAttribute.Value, tab.TabID.ToString());
				if (tab.TabID == IntegerValue) {
					writer.AddAttribute(HtmlTextWriterAttribute.Selected, "selected");
				}
				writer.RenderBeginTag(HtmlTextWriterTag.Option);
				writer.Write(tab.IndentedTabName);
				writer.RenderEndTag();
			}
			writer.RenderEndTag();
		}
		protected override void RenderViewMode(System.Web.UI.HtmlTextWriter writer)
		{
			DotNetNuke.Entities.Tabs.TabController tabController = new DotNetNuke.Entities.Tabs.TabController();
			TabInfo linkedTabInfo = tabController.GetTab(IntegerValue, DotNetNuke.Common.Globals.GetPortalSettings().PortalId, false);
			if (linkedTabInfo != null) {
				int tabID = 0;
				int moduleID = 0;
				Int32.TryParse(this.Page.Request.QueryString["tabid"], out tabID);
				Int32.TryParse(this.Page.Request.QueryString["mid"], out moduleID);
				string url = DotNetNuke.Common.Globals.LinkClick(StringValue, tabID, moduleID, true);
				ControlStyle.AddAttributesToRender(writer);
				writer.AddAttribute(HtmlTextWriterAttribute.Href, url);
				writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
				writer.RenderBeginTag(HtmlTextWriterTag.A);
				writer.Write(linkedTabInfo.LocalizedTabName);
				writer.RenderEndTag();
			}
		}
	}
}
